<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
<!-- 
    原型对象：
        构造函数的方式创建对象
        对象的方法存在，构造函数里面，比较浪费空间
        构造函数有一个prototype 原型对象，它的属性或方法可以被 构造函数的对象共享
        对象没有prototype这种属性，而是__proto__  p1.__proto__===People.prototype


        prototype  可以扩展构造函数
        可以使用后  构造函数名.prototype 来扩展函数或者说来定义方法或属性

        2.constructor
            __proto__对象里面有一个默认的constructor
            这个constructor 指向了构造函数本身
            问题： 如果用了一个对象覆盖了prototype属性，constructor就消失了
            注意：一定要在覆盖对象里面  重写constructor 执行构造函数
            
 -->

    <script>
        function People()
        {
            this.name='马云'
        }
        var obj={
            age:40,
            constructor:People  //把constructor指向了构造函数
        }
        People.prototype=obj;  //覆写
        var p1=new People()
        console.log('这是p1对象',p1);
        console.log('p1对象的对象原型==>',p1.__proto__);
        console.log('p1对象的对象原型的对象原型==>',p1.__proto__.__proto__);
        console.log('p1对象的对象原型的对象原型的对象原型==>',p1.__proto__.__proto__.__proto__);
    </script>

</body>
</html>